"""
利用哈希表进行求解
"""

class Solution:
    def romanToInt(s):
        d = {'I': 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}  # 罗马数字的可能性
        ans = 0
        ln = len(s)
        for i in range(ln):
            """
            如果一个数字比它的后一个数字小就是以下六种特殊情况的一种，
            需要后一位减前一位，否则就是正常的加法运算。
            I可以放在V(5) 和X(10) 的左边，来表示 4 和 9。
            X可以放在L(50) 和C(100) 的左边，来表示 40 和90。
            C可以放在D(500) 和M(1000) 的左边，来表示400 和900。
            """
            if i < ln - 1 and d[s[i]] < d[s[i + 1]]:
                ans -= d[s[i]]
            else:
                ans += d[s[i]]
        return ans


s = "IV"
print(Solution.romanToInt(s))
